package admin

import (
	"e_mall_server/models"
	"e_mall_server/service"
	"github.com/gin-gonic/gin"
	"go.uber.org/zap"
	"strconv"
)

/**
 * @Author: zhaobin
 * @Description TODO
 * @Date: 2022-05-20 23:36
 */

// GetOrderList 获取订单列表接口
func GetOrderList(c *gin.Context) {
	// 绑定分页信息
	orderPageParam := models.OrderPageParam{}
	if err := c.ShouldBind(&orderPageParam); err != nil {
		zap.L().Error("GetOrderList with invalid param", zap.Error(err))
		ResponseError(c, "请求参数错误")
		return
	}
	orderResponse, err := service.GetOrderList(&orderPageParam)

	if err != nil {
		zap.L().Error("service.GetOrderList() failed", zap.Error(err))
		ResponseError(c, "查询订单列表失败")
		return
	}
	zap.L().Debug("订单数据", zap.Any("value", orderResponse))
	ResponseSuccess(c, orderResponse)
}

// UpdateOrder 通过修改订单信息接口
func UpdateOrder(c *gin.Context) {
	order := models.Order{}
	if err := c.ShouldBind(&order); err != nil {
		zap.L().Error("UpdateOrder with invalid param", zap.Error(err))
		ResponseError(c, "请求参数错误")
		return
	}
	zap.L().Debug("Order数据", zap.Any("value", order))
	// 业务逻辑处理
	if count := service.UpdateOrder(&order); count > 0 {
		// 创建成功返回响应
		ResponseSuccess(c, nil)
		return
	}
	ResponseError(c, "修改订单失败 请重试")
}

// DeleteOrder 删除订单接口
func DeleteOrder(c *gin.Context) {
	id, err := strconv.ParseInt(c.Param("id"), 10, 64)
	if err != nil {
		zap.L().Error("DeleteOrder with invalid param", zap.Error(err))
		ResponseError(c, "传入参数错误")
		return
	}
	count := service.DeleteOrderById(id)
	if count > 0 {
		ResponseSuccess(c, nil)
		return
	}
	ResponseError(c, "删除订单失败")
}

// GetOrderDetailById 通过id查询订单信息
func GetOrderDetailById(c *gin.Context) {
	idStr := c.Param("id")
	id, err := strconv.ParseInt(idStr, 10, 64)
	if err != nil {
		zap.L().Error("GetOrderDetailById with invalid param", zap.Error(err))
		ResponseError(c, "请求参数错误")
	}
	Order, err := service.GetOrderDetailById(id)
	if err != nil {
		zap.L().Error("service.GetOrderDetailById(id) failed", zap.Error(err))
		ResponseError(c, "获取订单信息错误")
		return
	}
	ResponseSuccess(c, Order)
}
